/**
 * 
 */
package com.epcs.subGNuevosNegocios.eci.dao.proceso;

import java.util.List;

import com.epcs.subGNuevosNegocios.eci.to.AtributoTO;
import com.epcs.subGNuevosNegocios.eci.to.ClienteTO;
import com.epcs.subGNuevosNegocios.eci.to.ControllerTO;
import com.epcs.subGNuevosNegocios.eci.to.EncuestaTO;
import com.epcs.subGNuevosNegocios.eci.to.HijounidadTO;
import com.epcs.subGNuevosNegocios.eci.to.PreguntaTO;
import com.epcs.subGNuevosNegocios.eci.to.ProveedorServicioTO;
import com.epcs.subGNuevosNegocios.eci.to.UsuarioTO;
import com.sun.org.apache.bcel.internal.generic.InstructionConstants.Clinit;

/**
 * @author Nicolas Figueroa
 *
 */
public interface ProcesoDAOInterface {
	
	public int creaEncuesta (EncuestaTO encuestaTO);
	
	public List<EncuestaTO> getAllProcess();
	
	public List<EncuestaTO> getAllOldProcess();
	
	public EncuestaTO getProceso(Integer idProceso);
	
	public List<ControllerTO> getControllers(Integer idProceso);
	
	public List<PreguntaTO> getPreguntasGenerales(Integer idProceso);
	
	public List<AtributoTO> getAtributosPregunta(Integer idPregunta);
	
	public Boolean cambiaEstadoProceso(Integer idProceso, Integer estado);
	
	public void modificaDatosGenerales(EncuestaTO encuestaTO);
	
	public String generarYObtenerArchivoPreguntas(Integer idProceso);
	
	public String generarYObtenerArchivoClientes(Integer idProceso);
	
	public void eliminarProcesoByIdProceso(Integer idProceso);
	
	public Boolean eliminarController(Integer idProceso, String rutController);
	
	public void creaControllers(Integer idProceso, String strControllers, Integer cantControllers, String rutCreador);
	
	public Integer obtienerPEncuestaActivo();
	
	public List<ProveedorServicioTO> getProveedoresServicio(Integer idProceso);
	
	public void guardaSeleccionPS(Integer idProceso,String strPS, Integer cantPS, String rut_asginador, Integer perfil_asignador);
	
	public List<HijounidadTO> obtenerVPsACargoController(UsuarioTO usuarioTO);
	
	public List<HijounidadTO> obtenerAreasACargoPS(UsuarioTO usuarioTO);
	
	public boolean validaExisteCLiente(ClienteTO clienteTO);
	
	public ClienteTO creaCliente(ClienteTO clienteTO);
	
	public void guardaAsignacionCLientesPG(Integer idProceso, String rut_usuario, String strRuts, Integer cantRuts);
	
	public ClienteTO obtenerCliente(String rut);
	
	public Boolean validaSiTieneEncabezado(Integer idProceso, String rut_usuario, Integer idPerfil);
	
	public String[] obtenerTodasLasUnidadesSuperiores(Integer idProceso, String rut_usuario);
	
	public void savePreguntasEspecificas(Integer idProceso, String strPreguntas, Integer cantPreguntas, String rut_creador, Integer perfil_creador, String codigoPE);
	
	public void saveEncabezado(Integer idProceso, String encabezado, String rut_creador, Integer perfil_creador, String codigoPE);
	
	public String obtenerCodigoJerarquico(Integer idProceso, String rutPS);
	
	public List<PreguntaTO> obtenerPreguntasEspecificas(Integer idProceso, String rutUsuario, Integer perfilUsuario);
	
	public List<ClienteTO> obtenerUniversoClientesByIdPregunta(Integer idProceso, String rutUsuario, Integer idPregunta);
	
	public void savaAsociacionClientePE(Integer idProceso, String nrut_usuario, Integer idPerfil, String strRuts, Integer cantRuts, Integer idPregunta);
	
	public void eliminaPS(Integer idProceso, String rut_PS);

}
